node.js是否可以配置为仅使用全局安装的模块并忽略本地node_modules目录?
对于我们的node.js app(当前为node.js 8.10.0),我们构建了一个Docker镜像,其中所需的模块全局安装在/node_modules
文件夹中,环境设置为{{1 }}。这适用于生产部署。
对于本地开发,我们运行相同的Docker镜像,但将本地开发文件挂载到NODE_PATH=/node_modules
。这允许图像使用任何本地更改的文件。
这一点有效,直到开发人员在其主机系统上运行/app
,并创建一个npm install
目录。它安装在node_modules
。 /app/node_modules
在启动时检查此文件夹,starts complaining检查有关丢失的二进制文件:
node
如果有办法告诉kumascript_1 | ## There is an issue with `node-fibers` ##
kumascript_1 | `/app/node_modules/fibers/bin/linux-x64-57/fibers.node` is missing.
kumascript_1 |
kumascript_1 | Try running this to fix the issue: /usr/local/bin/node /app/node_modules/fibers/build
kumascript_1 | /app/node_modules/fibers/fibers.js:20
kumascript_1 | throw new Error('Missing binary. See message above.');
kumascript_1 | ^
kumascript_1 |
kumascript_1 | Error: Missing binary. See message above.
kumascript_1 | at Object.<anonymous> (/app/node_modules/fibers/fibers.js:20:8)
kumascript_1 | at Module._compile (module.js:652:30)
kumascript_1 | at Object.Module._extensions..js (module.js:663:10)
kumascript_1 | at Module.load (module.js:565:32)
kumascript_1 | at tryModuleLoad (module.js:505:12)
kumascript_1 | at Function.Module._load (module.js:497:3)
kumascript_1 | at Module.require (module.js:596:17)
kumascript_1 | at require (internal/module.js:11:18)
kumascript_1 | at Object.<anonymous> (/app/lib/kumascript/templates.js:11:13)
kumascript_1 | at Module._compile (module.js:652:30)
忽略node
,那么开发人员可以在主机系统上使用/app/node_modules
执行他们想要的操作,并且Docker容器将继续作为预期。