在开发我的第一个 npm 脚本的早期,有些挣扎。我在 Ubuntu LTS 上使用最新的 nvm、node、npm 和 pnpm 版本。
Node + npm 已经使用 nvm 安装,pnpm 使用 npm 安装,并且几个模块在本地安装(即没有 -g 标志)使用 pnpm。不需要 sudo。生成的 package.json:
{
"name": "javascript-development-environment",
"version": "1.0.0",
"description": "JavaScript development environment cobbled together using various online sources",
"scripts": {
"prestart": "./node_modules/.bin/babel buildScripts/startMessage.js",
"start": "./node_modules/.bin/babel buildScripts/srcServer.js"
},
"author": "Laird o' the Windy Waas",
"license": "MIT",
"dependencies": {
"@babel/polyfill": "^7.0.0"
},
"devDependencies": {
"@babel/cli": "^7.1.5",
"@babel/core": "^7.1.6",
"@babel/preset-env": "^7.1.6",
"chalk": "^2.4.1",
"express": "^4.16.4",
"open": "^0.0.5",
"path": "^0.12.7"
}
}
仅安装 Firefox 60.0.1 后,在使用node执行“pnpm start”时,会打开一个浏览器窗口“Hello World!” 显示,并且必须使用 CTRL-C 重新获得终端控制。-> 一切正常。
如果我使用如上所示的路径替换 babel (这是由于本文中描述的相同问题造成的),buildScripts 代码会回显到终端,但不会打开浏览器窗口,并且终端控制会在完成后立即释放。npm 调试器没有提供有用的反馈。- >有些东西不工作..
作为“Hello World!” 代码使用节点正确遍历(并且对于 babel 遍历保持不变),它不是问题的根源。
这是我的 babel 配置文件:
.babelrc
{
"presets": [
"@babel/preset-env"
]
}
babel.config.js
const presets = [
[
"@babel/env",
{
targets: {
edge: "17",
firefox: "61",
chrome: "67",
safari: "11.1",
opera: "56"
},
useBuiltIns: "usage"
},
],
];
module.exports = { presets };
问题似乎是 babel 没有将转译的代码传递给 nodejs / express。一定会很简单,但我只是在兜圈子..
我发现自己要问的一件事是,不同的 env 预设之间是否可能存在冲突.babelrc
,babel.config.js
和package.json
. 然而,.babelrc
和文件的连续停放并没有带来任何变化/提前。babel.config.js
我还注意到当前安装了(nvms)节点和(ubuntus)nodejs:
$ which node
/home/<myusername>/.nvm/versions/node/v10.13.0/bin/node
$ which nodejs
/usr/bin/nodejs
但是,由于与 node 和 npm 有关的所有内容都是使用 nvm 安装的,所以这应该不是问题。
我想,我可以尝试在全球范围内安装 babel,但要使用这个广受好评的 apon。我更喜欢反映“最佳实践”的解决方案。
感谢您的任何建议。