我正在使用gulp来复制创建的构建包:
gulp.task('fill-deploy-target', ['init-deploy-target'], () =>
gulp.src(['server*/**/*', 'node_modules*/**/*', 'package.json', 'package-lock.json',
'ecosystem.config.js', 'gulpfile.js', '.sequelizerc'], { dot: true })
.pipe(gulp.dest(`${deployTargetDir}/app_install/app/package`)));
在node_modules中有一个导致问题的文件夹.bin。 .bin文件夹中的所有文件都被复制,但是当我尝试运行build时,cross-env会给我这个错误。当我手动将.bin文件夹复制到服务器时,没有错误认为它是具有相同文件的同一文件夹。可能是什么问题?
答案 0 :(得分:0)
我没有使用gulp,但我的猜测是gulp不支持(软)符号链接。
在我的.bin文件夹中,所有文件都是到node_modules文件夹的符号链接:
但是,当我仅复制文件夹(例如,使用filezilla或使用gulp)时,会看到以下内容(ls -al):
检查交叉环境文件时,您会看到它需要('..')文件,该文件在符号链接的情况下有效,但是如果仅复制该文件则失败。
#!/usr/bin/env node
'use strict';
var crossEnv = require('..');
crossEnv(process.argv.slice(2));
因此解决方案是使用符号链接复制.bin文件或使用如下绝对路径运行跨环境:
"scripts": {
"start": "npm run production",
"prod": "npm run production",
"production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node your-app.js",
"dev": "npm run development",
"development": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node your-app.js"
},