在 nodejs + Ionic 应用程序中从 index.html 中的另一个文件夹导入 js 文件时出现 404 错误

404 error while import js file from another folders in index.html in nodejs + Ionic app

我有错误,我花了几个小时试图解决它。 我的文件结构:

-/node_modules
-/www
---bundle.js
---index.html

在index.html我有这样的代码

<script src="node_modules/ng-cordova/dist/ng-cordova.min.js" type="text/javascript"></script>

<!-- cordova script (this will be a 404 during development) -->
<script src="cordova.js"></script>

<script src="bundle.js"></script>

问题是 bundle.js 包含在内很好,但是 ng-cordova.min.js 给出 404 错误

Cannot GET /node_modules/ng-cordova/dist/ng-cordova.min.js

编辑:我也试过了,没有成功

<script src="/node_modules/ng-cordova/dist/ng-cordova.min.js" type="text/javascript"></script>
<script src="../node_modules/ng-cordova/dist/ng-cordova.min.js" type="text/javascript"></script>

我不使用 expressexpress.static

这里的问题是您尝试从 加载 ng-cordova.min.js 文件index.html 文件夹。 你应该改变:

<script src="node_modules/ng-cordova/dist/ng-cordova.min.js" type="text/javascript"></script>

为此:

<script src="../node_modules/ng-cordova/dist/ng-cordova.min.js" type="text/javascript"></script>

您正试图从错误的目录加载文件。 您要么必须使用此路径:

src="../node_modules/

或者这个:

src="/node_modules"

如果上面的目录是你的根目录。

同样令人困惑的是,您在其中注释错误的行并不是错误实际来自的行。你为什么要 link 到文件两次?

//编辑:由于 Romain 比我快一分钟,我认为他应该得到正确答案的奖励 :P 只有当它真正解决了你的问题时 :D

从您的项目结构来看,我敢打赌它是由 Express.js 提供支持的。我还打赌 www 文件夹在 Express 应用程序中被设置为静态文件夹,如下所示:

app.use('/', express.static(path.join(__dirname, www)));

在这种情况下,您的服务器将只提供位于 www 文件夹中的文件。您需要在 www 文件夹中包含任何客户端依赖项:

-/node_modules/
-/www/
--lib/
---ng-cordova/
--bundle.js
--index.html

然后像这样加载它们:

<script src="lib/ng-cordova/dist/ng-cordova.min.js" type="text/javascript"></script>

更新

只需将 node_modules 放入 www 文件夹,它应该可以正常工作。