Я использую приложение PreactJS (так же, как ReactJS).Мы используем webapck для создания приложения.до недавнего времени разработчики могли копировать папку node_modules из исходного репозитория, и они могли запускать приложение.
Недавно мы обновили все модули узлов, и теперь каждый разработчик должен запустить команду npm install
, чтобы запустить приложение.Простое копирование папки node_modules больше не работает.
Я понимаю, что это правильный способ работы, но много времени из-за ограничений со стороны моей компании, разработчики борются с получением модулей узлов из Интернета.Вот почему мы приняли этот подход.
Вот как выглядит 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 install, чтобы мое приложение работало?Должно ли работать только копирование узловых модулей?Если мое предположение неверно, что мне нужно учиться в этой ситуации.
в webpack.config, у меня есть правило, которое предписывает babel исключить node_modules.
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader'
}]