Node.js 如何在docker中执行非全局npm二进制文件

Node.js 如何在docker中执行非全局npm二进制文件,node.js,docker,Node.js,Docker,假设我有下面的Dockerfile WORKDIR $APP_DIR ENTRYPOINT ["npm", "run"] CMD ["start"] start映射到babel节点bin/server,其中babel节点是一个nodejs非全局依赖性二进制文件(默认情况下安装在$APP\u DIR/node\u模块内) 在我的mac电脑上,没有任何设置,这一切正常。但当我在docker内部运行它时,它会显示未找到命令,这并不奇怪 因此,相同的命令npm run start在我的主机上工作,但在

假设我有下面的Dockerfile

WORKDIR $APP_DIR
ENTRYPOINT ["npm", "run"]
CMD ["start"]
start
映射到
babel节点bin/server
,其中babel节点是一个nodejs非全局依赖性二进制文件(默认情况下安装在$APP\u DIR/node\u模块内)

在我的mac电脑上,没有任何设置,这一切正常。但当我在docker内部运行它时,它会显示未找到命令,这并不奇怪

因此,相同的命令
npm run start
在我的主机上工作,但在Docker内部

sh: 1: babel-node: not found
error Command failed with exit code 127.

您可以这样尝试:
CMD[./node\u modules/babel node/bin/babel node your app.js]

或者尝试使用另一种方式:

// you can rename this file to bin.js

const fs = require('fs');
const babelrc = fs.readFileSync('.babelrc', 'utf-8');
let config = {};
try {
  config = JSON.parse(config);
} catch(err) {
  console.error('==>     ERROR: Error parsing your .babelrc.');
}
require("babel-polyfill");
require('babel-register')(config);

// then require your app.js
require('./app.js);
然后Dockerfile将如下所示:

...other codes
CMD [node bin.js]