Javascript 无法仅通过复制节点模块来运行应用程序
我正在运行一个PreactJS(与ReactJS相同)应用程序。我们使用webapck来构建应用程序。直到最近,开发人员才能够从源存储库复制node_modules文件夹,并能够运行应用程序 最近我们更新了所有节点模块,现在每个开发人员都必须运行Javascript 无法仅通过复制节点模块来运行应用程序,javascript,node.js,webpack,npm-install,node-modules,Javascript,Node.js,Webpack,Npm Install,Node Modules,我正在运行一个PreactJS(与ReactJS相同)应用程序。我们使用webapck来构建应用程序。直到最近,开发人员才能够从源存储库复制node_modules文件夹,并能够运行应用程序 最近我们更新了所有节点模块,现在每个开发人员都必须运行npm install命令才能运行应用程序。简单地复制node_modules文件夹不再有效 我知道这是正确的工作方式,但由于我公司方面的限制,开发人员在很多时候都很难从internet获取节点模块。这就是我们采取这种做法的原因 package.json
npm install
命令才能运行应用程序。简单地复制node_modules文件夹不再有效
我知道这是正确的工作方式,但由于我公司方面的限制,开发人员在很多时候都很难从internet获取节点模块。这就是我们采取这种做法的原因
package.json的外观如下:
"dependencies": {
"ion-rangeslider": "^2.2.0",
"jquery": "^3.3.1",
"preact": "^8.3.1",
"preact-router": "^2.6.1",
"preact-async-route": "^2.2.1",
"promise-polyfill": "^8.1.0",
"redux": "^4.0.0"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.1",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-proposal-decorators": "^7.0.0",
"@babel/plugin-syntax-dynamic-import": "^7.0.0",
"@babel/plugin-transform-react-jsx": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/register": "^7.0.0",
"@babel/runtime": "^7.0.0",
"autoprefixer": "^9.1.5",
"babel-eslint": "^9.0.0",
"babel-loader": "^8.0.2",
"compression": "^1.7.3",
"copy-webpack-plugin": "^4.5.2",
"core-js": "^2.5.7",
"cross-env": "^5.2.0",
"css-loader": "^1.0.0",
"eslint": "^5.6.0",
"file-loader": "^2.0.0",
"html-webpack-plugin": "^3.2.0",
"isomorphic-fetch": "^2.2.1",
"less": "^3.8.1",
"less-loader": "^4.1.0",
"mini-css-extract-plugin": "^0.4.2",
"mkdirp": "^0.5.1",
"ncp": "^2.0.0",
"optimize-css-assets-webpack-plugin": "^5.0.1",
"path": "^0.12.7",
"postcss-loader": "^3.0.0",
"raw-loader": "^0.5.1",
"regexp-replace-loader": "^1.0.1",
"source-map-loader": "^0.2.4",
"style-loader": "^0.23.0",
"uglifyjs-webpack-plugin": "^2.0.0",
"url-loader": "^1.1.1",
"webpack": "^4.19.0",
"webpack-bundle-analyzer": "^3.0.2",
"webpack-cli": "^3.1.0",
"webpack-dev-server": "^3.1.8"
}
}
我得到这个错误:
C:\MyApp\trunk\node_modules\@xtuc\long\src\long.js:24
export default function Long(low, high, unsigned) {
^^^^^^
SyntaxError: Unexpected token export
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (C:\MyApp\trunk\node_modules\@xtuc\long\index.js:1:80)
npm安装
可能会根据运行它的机器执行不同的操作。例如,模块可能在MacOS上编译库,但在Windows上使用绑定的二进制文件。如果生成node\u模块
的机器与您的开发机器相同,则复制node\u模块
只能始终适用于每个包。您甚至不应该将node\u模块
检查到源代码控制系统中,只需要package.json
和锁文件npm安装
可能会根据运行它的机器执行不同的操作。例如,模块可能在MacOS上编译库,但在Windows上使用绑定的二进制文件。如果生成node\u模块
的机器与您的开发机器相同,则复制node\u模块
只能始终适用于每个包。您甚至不应该将node\u模块
检查到源代码控制系统中,只需要package.json
和锁文件您正在使用的一个包的格式是node.js无法理解的。它需要
commonjs
格式,但它得到的是较新的ES6模块(例如,请参阅以获取更多信息)。通常,NPM上的软件包(安装到节点_模块
中)采用commonjs
格式,因此您不需要传输第三方代码,只需要传输您自己的代码
奇怪的是,它有一个通用的JS版本。它看起来像(或者另一个transpiler正在尝试读取
节点\u模块中的每个文件)
(这不应该发生!)如果您共享您的package.json
,我们可以查看是否触发了任何脚本。您正在使用的一个包的格式是node.js无法理解的。它需要commonjs
格式,但它得到的是较新的ES6模块(例如,有关更多信息,请参阅)。通常在NPM上打包(安装到节点的
模块采用commonjs
格式,因此您无需传输第三方代码,只需传输自己的代码
奇怪的是,它有一个通用的JS版本。它看起来像(或者另一个transpiler正在尝试读取
节点\u模块中的每个文件)
(这不应该发生!)如果您共享您的包.json
,我们可以查看是否触发了任何脚本。我已经更新了问题,以包括我在应用程序中使用的节点模块列表。您刚才所说的有道理。但是您是如何得出结论的您正在使用的一个包的格式是node.js无法理解的
在遇到“导入”或“导出”时,您知道这并不常见。像babel这样的Transpiler负责将“导入/导出”传输到“require/module.exports”。有关格式的更多信息,请参阅。您是否也可以添加webpack.config.js?我非常确定它不排除node_modules文件夹。从您的package.json中,我看不到调用的内容,因为它不完整。它缺少开头大括号和包名等内容,最重要的是脚本。nodej被这部分卡住了在您的示例中:export default function Long(low,high,unsigned){^^^^^^^^^语法错误:意外的令牌导出
我确实在webpack.config`rules:[{test:/\.jsx?$/,exclude:/node_modules/,loader:'babel loader'}中看到了这个代码段,`这是在告诉巴贝尔排除节点模块吗?它不起作用还是只是排除了。jsx
文件我已经更新了这个问题,包括了我在应用程序中使用的节点模块的列表。你刚才说的很有道理。但是你是如何得出结论的你正在使用的一个包的格式是node.js的格式es不明白
一旦你遇到“导入”或“导出”,你就会知道这并不常见。像巴贝尔这样的传输员负责将“导入/导出”传输到“require/module.exports”。有关格式的更多信息,请参阅。您是否也可以添加webpack.config.js?我非常确定它不排除node_modules文件夹。从您的package.json中,我看不到调用的内容,因为它不完整。它缺少开头大括号和包名等内容,最重要的是脚本。nodej被这部分卡住了在您的示例中:export default function Long(low,high,unsigned){^^^^^^^^^语法错误:意外的令牌导出
我确实在webpack.config`rules:[{test:/\.jsx?$/,exclude:/node_modules/,loader:'babel loader'}中看到了这个代码段,`这是告诉babel排除节点模块?它不工作还是只是排除了.jsx
文件
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader'
}]