使用docker run初始化Node项目遇MODULE_NOT_FOUND错误求助
错误原因
你把 "npm init" 作为单个参数传给了node镜像的默认入口程序 node,而node会将这个参数解析为要加载的模块路径,自然找不到名为 /npm init 的模块——因为node试图加载一个叫npm init的文件,这显然不存在。
解决方案
有两种简单的方式可以实现一步完成交互式初始化:
直接指定执行npm命令
修改命令,将镜像后的参数拆分为npm和init,让docker明确执行npm程序而非默认的node:docker run --rm -it -v "$PWD":/usr/app -w "/usr/app" --name foo_bar node:lts npm init加上
-it参数会保持交互式会话,你可以正常完成项目名称、版本等参数的设置,生成的package.json会保存到挂载的当前目录。通过shell执行命令
如果需要执行更复杂的命令组合,可通过shell包裹执行:docker run --rm -it -v "$PWD":/usr/app -w "/usr/app" --name foo_bar node:lts /bin/sh -c "npm init"这种方式让容器先启动shell,再执行
npm init,同样能触发交互式引导流程。
内容的提问来源于stack exchange,提问作者Rashiq
相关产品推荐
相关产品推荐

