node 用 require 引入 js 文件, 另一个文件可以,一个却不行,到底是什么原因,本地跑也都是没问题的,放到服务器上跑就不行了。为什么会用这么诡异的问题、、、 大家帮忙看看,3Q
引入 globalIncreId.js 不行, 引入 config.js 是可以的, 文件都是有的:
$ ls -al
total 124
drwxr-xr-x 4 root root 4096 Aug 16 17:33 .
drwxr-xr-x 5 root root 4096 Aug 16 17:27 ..
drwxr-xr-x 8 root root 4096 Aug 16 17:30 .git
-rw-r--r-- 1 root root 66 Aug 16 17:27 .gitattributes
-rwxr-xr-x 1 root root 31 Aug 16 17:27 .gitignore
-rw-r--r-- 1 root root 10054 Aug 16 17:27 DDL.sql
-rw-r--r-- 1 root root 7877 Aug 16 17:27 app.js
-rw-r--r-- 1 root root 2060 Aug 16 17:27 collectConfig.js
-rw-r--r-- 1 root root 2059 Aug 16 17:27 collectConfig_editing.js
-rw-r--r-- 1 root root 644 Aug 16 17:28 config.js
-rw-r--r-- 1 root root 129 Aug 16 17:27 db.js
-rw-r--r-- 1 root root 129 Aug 16 17:27 db1.js
-rw-r--r-- 1 root root 379 Aug 16 17:33 globalIncreID.js
-rw-r--r-- 1 root root 545 Aug 16 17:27 globalIncreID_mysql.js
-rw-r--r-- 1 root root 1236 Aug 16 17:27 myUtil.js
drwxr-xr-x 20 root root 4096 Aug 16 17:27 node_modules
-rw-r--r-- 1 root root 4956 Aug 16 17:27 package-lock.json
-rw-r--r-- 1 root root 372 Aug 16 17:27 package.json
-rw-r--r-- 1 root root 601 Aug 16 17:27 redisCli.js
-rw-r--r-- 1 root root 339 Aug 16 17:27 test2.js
-rw-r--r-- 1 root root 429 Aug 16 17:27 testAsync.js
-rw-r--r-- 1 root root 829 Aug 16 17:27 testAsyncEach.js
-rw-r--r-- 1 root root 875 Aug 16 17:27 testAsyncForever.js
-rw-r--r-- 1 root root 286 Aug 16 17:27 testAsyncWhilst.js
-rw-r--r-- 1 root root 219 Aug 16 17:27 testGlobalIncreID.js
-rw-r--r-- 1 root root 584 Aug 16 17:27 testMysqlReturn.js
-rw-r--r-- 1 root root 371 Aug 16 17:27 testSetTimeIntervalRun.js
这个不行:
const globalIncreId = require('./globalIncreId');
报错:
$ node app.js
internal/modules/cjs/loader.js:583
throw err;
^
Error: Cannot find module './globalIncreId'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
at Function.Module._load (internal/modules/cjs/loader.js:507:25)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/apps/unify-data/app.js:13:23)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
这个 config 是可以的:
const config = require('./config');
1
selfcreditgiving OP 自己更新一下:
把 globalIncreId.js 改成 global.js ,然后再把 require 改成对应的名字又可以了。。。 这个文件名有毒吗 |
2
CDL 2019-08-16 17:51:25 +08:00
linux 文件名区分大小写,win 不区分。手动狗头
|
3
selfcreditgiving OP @CDL 本地环境是 mac,服务器是 ubuntu docker 容器,应该没区别吧 搞不懂了
|
4
selfcreditgiving OP 总是要给你出一些幺蛾子 ,,,
|
5
CDL 2019-08-16 17:56:40 +08:00
@selfcreditgiving globalIncreID != globalIncreId
|
6
valeamoris 2019-08-16 17:57:20 +08:00
mac 环境是不区分大小写的
|
7
selfcreditgiving OP |
8
CDL 2019-08-16 18:14:51 +08:00
eslint 可以解决绝大部分这种低级问题
|
9
rbe 2019-08-16 18:16:44 +08:00
并非 mac 不区分大小写,只是默认不区分。实际 mac 提供的文件系统也可以装成区分大小写的,不过可能有些软件会坑了。
针对这个问题,你可以试试放弃驼峰命名,改用用下划线命名? |
10
selfcreditgiving OP @CDL eslint 确实没配,想着简单一点,主要还是懒 以后把别人的代码拷过来用也不用调格式了
|
11
hoyixi 2019-08-16 18:26:45 +08:00
让我想起了 getElemenById =》 getElemenByID
文本编辑神器和前端 IDE 还 G 没泛滥的年代,手写 js 狂操 DOM 的时候,不知写错过多少回。文思泉涌,行云流水,写完一运行,MLGB~ |
13
rockjike 2019-08-17 10:20:48 +08:00 via Android
配个智能路径
|