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 配个智能路径 |