V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
selfcreditgiving
V2EX  ›  问与答

node 诡异的问题,找不到自己写的 js module

  •  
  •   selfcreditgiving · 2019-08-16 17:44:43 +08:00 · 1871 次点击
    这是一个创建于 1960 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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');
    
    13 条回复    2019-08-17 10:20:48 +08:00
    selfcreditgiving
        1
    selfcreditgiving  
    OP
       2019-08-16 17:48:29 +08:00
    自己更新一下:
    把 globalIncreId.js 改成 global.js ,然后再把 require 改成对应的名字又可以了。。。 这个文件名有毒吗
    CDL
        2
    CDL  
       2019-08-16 17:51:25 +08:00
    linux 文件名区分大小写,win 不区分。手动狗头
    selfcreditgiving
        3
    selfcreditgiving  
    OP
       2019-08-16 17:54:37 +08:00
    @CDL 本地环境是 mac,服务器是 ubuntu docker 容器,应该没区别吧 搞不懂了
    selfcreditgiving
        4
    selfcreditgiving  
    OP
       2019-08-16 17:55:59 +08:00
    总是要给你出一些幺蛾子 ,,,
    CDL
        5
    CDL  
       2019-08-16 17:56:40 +08:00
    @selfcreditgiving globalIncreID != globalIncreId
    valeamoris
        6
    valeamoris  
       2019-08-16 17:57:20 +08:00
    mac 环境是不区分大小写的
    selfcreditgiving
        7
    selfcreditgiving  
    OP
       2019-08-16 18:08:47 +08:00
    @CDL 这个厉害了,自己肯定发现不了。 多谢大佬
    老是犯这种低级错误,大佬们是怎么预防的啊,好几次被这种情况折磨死,最后才发现只是一个变量名写错了

    这个 phpstorm 它也不报错呀
    CDL
        8
    CDL  
       2019-08-16 18:14:51 +08:00
    eslint 可以解决绝大部分这种低级问题
    rbe
        9
    rbe  
       2019-08-16 18:16:44 +08:00
    并非 mac 不区分大小写,只是默认不区分。实际 mac 提供的文件系统也可以装成区分大小写的,不过可能有些软件会坑了。
    针对这个问题,你可以试试放弃驼峰命名,改用用下划线命名?
    selfcreditgiving
        10
    selfcreditgiving  
    OP
       2019-08-16 18:21:32 +08:00
    @CDL eslint 确实没配,想着简单一点,主要还是懒 以后把别人的代码拷过来用也不用调格式了
    hoyixi
        11
    hoyixi  
       2019-08-16 18:26:45 +08:00
    让我想起了 getElemenById =》 getElemenByID

    文本编辑神器和前端 IDE 还 G 没泛滥的年代,手写 js 狂操 DOM 的时候,不知写错过多少回。文思泉涌,行云流水,写完一运行,MLGB~
    miyuki
        12
    miyuki  
       2019-08-16 19:07:22 +08:00 via Android
    @hoyixi 然后少了个 t /手动狗头
    rockjike
        13
    rockjike  
       2019-08-17 10:20:48 +08:00 via Android
    配个智能路径
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2758 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:37 · PVG 14:37 · LAX 22:37 · JFK 01:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.